package com.hiquety.tcb.listener;

import com.hiquety.tcb.config.ClipboardSystem;
import com.hiquety.tcb.disk.ClipboardItemDisk;
import com.hiquety.tcb.entity.ClipboardItem;
import com.hiquety.tcb.utils.MD5Utils;
import com.hiquety.tcb.ui.IndexUI;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.input.Clipboard;

import java.time.LocalDateTime;

public class ClipboardListener implements ChangeListener<String> {
    @Override
    public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
        Clipboard systemClipboard = Clipboard.getSystemClipboard();
        String ogi;
        if ((ogi = systemClipboard.getString()) == null) {
            return;
        }
        String s = ogi.trim();
        if (s != null && s.length() > 0) {
            String md5 = MD5Utils.md5(s);
            ClipboardItem clipboardItem = ClipboardSystem.ai.get(md5);
            if (clipboardItem != null) {
                return;
            }
            clipboardItem = new ClipboardItem();
            clipboardItem.setMd5(md5);
            clipboardItem.setContent(s);
            clipboardItem.setCreateTime(LocalDateTime.now());
            ClipboardSystem.ai.put(md5, clipboardItem);
            IndexUI.observableList.add(0, clipboardItem);
            ClipboardItemDisk.write();
        }
    }
}
